package org.soderiakelvy.controller.reparto;

import java.io.Serializable;
import java.util.List;

import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.controller.util.SelectOneMany;
import org.soderiakelvy.model.domain.RepartoVO;
import org.soderiakelvy.model.service.RepartoServicio;
import org.soderiakelvy.model.service.imp.RepartoServicioImp;
import org.soderiakelvy.model.util.ConstantModel;

@ManagedBean
@ViewScoped
public class RepartoList implements Serializable{	
	private static final long serialVersionUID = -8780579396565069559L;
	
	private RepartoServicio repartoServicio ;
	private List<RepartoVO> repartos;
	private RepartoVO repartoSeleccionado;
	
	//constructor
	public RepartoList(){
		repartoServicio = new RepartoServicioImp();
		repartoSeleccionado = new RepartoVO();
		repartos = SelectOneMany.getRepartos();
	}
	
	public String calcular(RepartoVO r){
		return r.getNombre() + "esto es un calculo";
	}
	
	
	public String prepareEdit(RepartoVO reparto) {
		FacesContext fc = FacesContext.getCurrentInstance();
		Map<String,Object> sessionParams = fc.getExternalContext().getSessionMap();
		sessionParams.put("reparto", reparto);
		
		return Constante.URL_REPARTO_EDIT;
	}

	public void bajaListener(RepartoVO reparto){
		this.repartoSeleccionado = reparto;
	}
	
	public void eliminarReparto(){
		String result = repartoServicio.deleteReparto(repartoSeleccionado);
		if(result.equals(ConstantModel.SUCCESS)){
			repartos = SelectOneMany.getRepartos();
		}else{
			if(result.equals(ConstantModel.DELETE_ASIGNADO)){
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"No se puede eliminar el Reparto porque tiene Sucursales asignados", ""));
			}else {
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error al Insertar un registro", "Surgio un error al eliminar un registro. Comuicarse con el responsable del Sistema - "+result.toString()));
			}
		}
	}
	
	public String nuevoReparto(){
		return Constante.URL_REPARTO_NEW;
	}
		
	public List<RepartoVO> getRepartos() {
		return repartos;
	}

}
